package loaders

import (
	"context"
	"io/ioutil"
	"path/filepath"
	"time"
)

// TextLoader TXT文件加载器
type TextLoader struct {
	*BaseLoader
}

// NewTextLoader 创建TXT文件加载器
func NewTextLoader(filePath string) *TextLoader {
	return &TextLoader{
		BaseLoader: NewBaseLoader(filePath),
	}
}

// Load 加载TXT文件
func (l *TextLoader) Load(ctx context.Context) ([]Document, error) {
	startTime := time.Now()
	l.logInfo("开始加载TXT文件")

	content, err := ioutil.ReadFile(l.FilePath)
	if err != nil {
		l.logError(err, "读取TXT文件失败")
		return nil, err
	}

	// 创建文档对象
	doc := Document{
		Content: string(content),
		MetaData: map[string]interface{}{
			"file_path":    l.FilePath,
			"file_name":    filepath.Base(l.FilePath),
			"file_ext":     "txt",
			"content_type": "text/plain",
			"loader_type":  "TextLoader",
			"load_time":    startTime.Format(time.RFC3339),
			"content_size": len(content),
		},
		FilePath: l.FilePath,
	}

	l.logInfo("TXT文件加载成功", map[string]interface{}{
		"content_size": len(content),
		"load_time_ms": time.Since(startTime).Milliseconds(),
	})

	return []Document{doc}, nil
}
